<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>digestpp: digestpp Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">digestpp
   &#160;<span id="projectnumber">0.01</span>
   </div>
   <div id="projectbrief">Experimental&nbsp;C++11&nbsp;header-only&nbsp;message&nbsp;digest&nbsp;library.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a>  </div>
  <div class="headertitle">
<div class="title">digestpp Namespace Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>digestpp namespace  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdigestpp_1_1hasher.html">hasher</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main class template implementing the public API for hashing.  <a href="classdigestpp_1_1hasher.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ae7dba91d6b8d9c1ea7c194de33b1f98d"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake_provider, <a class="el" href="classdigestpp_1_1mixin_1_1blake__mixin.html">mixin::blake_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#ae7dba91d6b8d9c1ea7c194de33b1f98d">blake</a></td></tr>
<tr class="memdesc:ae7dba91d6b8d9c1ea7c194de33b1f98d"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE hash function (SHA-3 finalist)  <a href="#ae7dba91d6b8d9c1ea7c194de33b1f98d">More...</a><br /></td></tr>
<tr class="separator:ae7dba91d6b8d9c1ea7c194de33b1f98d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba880b81cd06ac625a680797a9c34f6c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint64_t, detail::blake2_type::hash &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#aba880b81cd06ac625a680797a9c34f6c">blake2b</a></td></tr>
<tr class="memdesc:aba880b81cd06ac625a680797a9c34f6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2b hash function.  <a href="#aba880b81cd06ac625a680797a9c34f6c">More...</a><br /></td></tr>
<tr class="separator:aba880b81cd06ac625a680797a9c34f6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef9e48cee90947e400f975c9ca126aee"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint32_t, detail::blake2_type::hash &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#aef9e48cee90947e400f975c9ca126aee">blake2s</a></td></tr>
<tr class="memdesc:aef9e48cee90947e400f975c9ca126aee"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2s hash function.  <a href="#aef9e48cee90947e400f975c9ca126aee">More...</a><br /></td></tr>
<tr class="separator:aef9e48cee90947e400f975c9ca126aee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47975780ffe7d66a274fafb292cbec29"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint64_t, detail::blake2_type::x_hash &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a47975780ffe7d66a274fafb292cbec29">blake2xb</a></td></tr>
<tr class="memdesc:a47975780ffe7d66a274fafb292cbec29"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2xb hash function.  <a href="#a47975780ffe7d66a274fafb292cbec29">More...</a><br /></td></tr>
<tr class="separator:a47975780ffe7d66a274fafb292cbec29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef4af42ce803e4dd8adc0d3fa8c44dd6"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint32_t, detail::blake2_type::x_hash &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#aef4af42ce803e4dd8adc0d3fa8c44dd6">blake2xs</a></td></tr>
<tr class="memdesc:aef4af42ce803e4dd8adc0d3fa8c44dd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2xs hash function.  <a href="#aef4af42ce803e4dd8adc0d3fa8c44dd6">More...</a><br /></td></tr>
<tr class="separator:aef4af42ce803e4dd8adc0d3fa8c44dd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e88d6565dc956c49573f71cba23bddc"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint64_t, detail::blake2_type::xof &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a7e88d6565dc956c49573f71cba23bddc">blake2xb_xof</a></td></tr>
<tr class="memdesc:a7e88d6565dc956c49573f71cba23bddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2xb in XOF mode.  <a href="#a7e88d6565dc956c49573f71cba23bddc">More...</a><br /></td></tr>
<tr class="separator:a7e88d6565dc956c49573f71cba23bddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab95d8383d5ea7b1c167f8c735a83fe6a"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::blake2_provider&lt; uint32_t, detail::blake2_type::xof &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#ab95d8383d5ea7b1c167f8c735a83fe6a">blake2xs_xof</a></td></tr>
<tr class="memdesc:ab95d8383d5ea7b1c167f8c735a83fe6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">BLAKE2xs in XOF mode.  <a href="#ab95d8383d5ea7b1c167f8c735a83fe6a">More...</a><br /></td></tr>
<tr class="separator:ab95d8383d5ea7b1c167f8c735a83fe6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ad6dd5d19a4e2ba87352e790b9676d2"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::groestl_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a6ad6dd5d19a4e2ba87352e790b9676d2">groestl</a></td></tr>
<tr class="memdesc:a6ad6dd5d19a4e2ba87352e790b9676d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Grøstl hash function.  <a href="#a6ad6dd5d19a4e2ba87352e790b9676d2">More...</a><br /></td></tr>
<tr class="separator:a6ad6dd5d19a4e2ba87352e790b9676d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a392d10c5f15452e692bae608869910ae"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::jh_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a392d10c5f15452e692bae608869910ae">jh</a></td></tr>
<tr class="memdesc:a392d10c5f15452e692bae608869910ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">JH hash function.  <a href="#a392d10c5f15452e692bae608869910ae">More...</a><br /></td></tr>
<tr class="separator:a392d10c5f15452e692bae608869910ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b65fae1ddea734203f1450f1ee84bc5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::k12m14_provider&lt; 128 &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a1b65fae1ddea734203f1450f1ee84bc5">k12</a></td></tr>
<tr class="memdesc:a1b65fae1ddea734203f1450f1ee84bc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">KangarooTwelve function.  <a href="#a1b65fae1ddea734203f1450f1ee84bc5">More...</a><br /></td></tr>
<tr class="separator:a1b65fae1ddea734203f1450f1ee84bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab25af0ef9a4c4658beca88fbf821a668"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::k12m14_provider&lt; 256 &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#ab25af0ef9a4c4658beca88fbf821a668">m14</a></td></tr>
<tr class="memdesc:ab25af0ef9a4c4658beca88fbf821a668"><td class="mdescLeft">&#160;</td><td class="mdescRight">MarsupilamiFourteen function.  <a href="#ab25af0ef9a4c4658beca88fbf821a668">More...</a><br /></td></tr>
<tr class="separator:ab25af0ef9a4c4658beca88fbf821a668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90a899ac8acc680665430608f9410c85"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::kmac_provider&lt; 128, false &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a90a899ac8acc680665430608f9410c85">kmac128</a></td></tr>
<tr class="memdesc:a90a899ac8acc680665430608f9410c85"><td class="mdescLeft">&#160;</td><td class="mdescRight">KMAC128 in hash mode.  <a href="#a90a899ac8acc680665430608f9410c85">More...</a><br /></td></tr>
<tr class="separator:a90a899ac8acc680665430608f9410c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f9055e092dd623dc74cf4b0588cb437"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::kmac_provider&lt; 256, false &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a6f9055e092dd623dc74cf4b0588cb437">kmac256</a></td></tr>
<tr class="memdesc:a6f9055e092dd623dc74cf4b0588cb437"><td class="mdescLeft">&#160;</td><td class="mdescRight">KMAC256 in hash mode.  <a href="#a6f9055e092dd623dc74cf4b0588cb437">More...</a><br /></td></tr>
<tr class="separator:a6f9055e092dd623dc74cf4b0588cb437"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89668569302df7e0dd03b7174732205b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::kmac_provider&lt; 128, true &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a89668569302df7e0dd03b7174732205b">kmac128_xof</a></td></tr>
<tr class="memdesc:a89668569302df7e0dd03b7174732205b"><td class="mdescLeft">&#160;</td><td class="mdescRight">KMAC128 in XOF mode (KMACXOF128)  <a href="#a89668569302df7e0dd03b7174732205b">More...</a><br /></td></tr>
<tr class="separator:a89668569302df7e0dd03b7174732205b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a370a5d0b21206abe72483afdd00d9991"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::kmac_provider&lt; 256, true &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a370a5d0b21206abe72483afdd00d9991">kmac256_xof</a></td></tr>
<tr class="memdesc:a370a5d0b21206abe72483afdd00d9991"><td class="mdescLeft">&#160;</td><td class="mdescRight">KMAC256 in XOF mode (KMACXOF256)  <a href="#a370a5d0b21206abe72483afdd00d9991">More...</a><br /></td></tr>
<tr class="separator:a370a5d0b21206abe72483afdd00d9991"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f44f2ba13aeb17e2b3e72cb1966ec98"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::kupyna_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a2f44f2ba13aeb17e2b3e72cb1966ec98">kupyna</a></td></tr>
<tr class="memdesc:a2f44f2ba13aeb17e2b3e72cb1966ec98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Kupyna hash function.  <a href="#a2f44f2ba13aeb17e2b3e72cb1966ec98">More...</a><br /></td></tr>
<tr class="separator:a2f44f2ba13aeb17e2b3e72cb1966ec98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a450b5606fcc57a8f9abe786042f94473"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::md5_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a450b5606fcc57a8f9abe786042f94473">md5</a></td></tr>
<tr class="memdesc:a450b5606fcc57a8f9abe786042f94473"><td class="mdescLeft">&#160;</td><td class="mdescRight">MD5 hash function.  <a href="#a450b5606fcc57a8f9abe786042f94473">More...</a><br /></td></tr>
<tr class="separator:a450b5606fcc57a8f9abe786042f94473"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a891a3fc5d8acf9c887b71065e8d905c1"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha1_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a891a3fc5d8acf9c887b71065e8d905c1">sha1</a></td></tr>
<tr class="memdesc:a891a3fc5d8acf9c887b71065e8d905c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-1 hash function.  <a href="#a891a3fc5d8acf9c887b71065e8d905c1">More...</a><br /></td></tr>
<tr class="separator:a891a3fc5d8acf9c887b71065e8d905c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affd7a1c48ea3fbb97adc51154e534e37"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha2_provider&lt; uint64_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#affd7a1c48ea3fbb97adc51154e534e37">sha512</a></td></tr>
<tr class="memdesc:affd7a1c48ea3fbb97adc51154e534e37"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-512 hash function.  <a href="#affd7a1c48ea3fbb97adc51154e534e37">More...</a><br /></td></tr>
<tr class="separator:affd7a1c48ea3fbb97adc51154e534e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32f89f2b267ee05fd0d09c862316be5b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha2_provider&lt; uint64_t, 384 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a32f89f2b267ee05fd0d09c862316be5b">sha384</a></td></tr>
<tr class="memdesc:a32f89f2b267ee05fd0d09c862316be5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-384 hash function.  <a href="#a32f89f2b267ee05fd0d09c862316be5b">More...</a><br /></td></tr>
<tr class="separator:a32f89f2b267ee05fd0d09c862316be5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22fdc9182b2f609a11e0eb906a374f02"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha2_provider&lt; uint32_t, 256 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a22fdc9182b2f609a11e0eb906a374f02">sha256</a></td></tr>
<tr class="memdesc:a22fdc9182b2f609a11e0eb906a374f02"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-256 hash function.  <a href="#a22fdc9182b2f609a11e0eb906a374f02">More...</a><br /></td></tr>
<tr class="separator:a22fdc9182b2f609a11e0eb906a374f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eb43b42bfeb66e2dfc423178e39986c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha2_provider&lt; uint32_t, 224 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a2eb43b42bfeb66e2dfc423178e39986c">sha224</a></td></tr>
<tr class="memdesc:a2eb43b42bfeb66e2dfc423178e39986c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-224 hash function.  <a href="#a2eb43b42bfeb66e2dfc423178e39986c">More...</a><br /></td></tr>
<tr class="separator:a2eb43b42bfeb66e2dfc423178e39986c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ac862e124d2502301eb501a6466b8dc"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sha3_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a4ac862e124d2502301eb501a6466b8dc">sha3</a></td></tr>
<tr class="memdesc:a4ac862e124d2502301eb501a6466b8dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-3 hash function.  <a href="#a4ac862e124d2502301eb501a6466b8dc">More...</a><br /></td></tr>
<tr class="separator:a4ac862e124d2502301eb501a6466b8dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17198d967ff887fb804aecc0a56153d3"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::shake_provider&lt; 128, 24 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a17198d967ff887fb804aecc0a56153d3">shake128</a></td></tr>
<tr class="memdesc:a17198d967ff887fb804aecc0a56153d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHAKE128 function.  <a href="#a17198d967ff887fb804aecc0a56153d3">More...</a><br /></td></tr>
<tr class="separator:a17198d967ff887fb804aecc0a56153d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534e07d1698662e11be399a6a735b278"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::shake_provider&lt; 256, 24 &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a534e07d1698662e11be399a6a735b278">shake256</a></td></tr>
<tr class="memdesc:a534e07d1698662e11be399a6a735b278"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHAKE256 function.  <a href="#a534e07d1698662e11be399a6a735b278">More...</a><br /></td></tr>
<tr class="separator:a534e07d1698662e11be399a6a735b278"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45d4799abd5095ba4caba998afe1472b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::shake_provider&lt; 128, 24 &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a45d4799abd5095ba4caba998afe1472b">cshake128</a></td></tr>
<tr class="memdesc:a45d4799abd5095ba4caba998afe1472b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Customizable cSHAKE128 function.  <a href="#a45d4799abd5095ba4caba998afe1472b">More...</a><br /></td></tr>
<tr class="separator:a45d4799abd5095ba4caba998afe1472b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6df32a29ed44d23d513a920147bf7eb1"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::shake_provider&lt; 256, 24 &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a6df32a29ed44d23d513a920147bf7eb1">cshake256</a></td></tr>
<tr class="memdesc:a6df32a29ed44d23d513a920147bf7eb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Customizable cSHAKE256 function.  <a href="#a6df32a29ed44d23d513a920147bf7eb1">More...</a><br /></td></tr>
<tr class="separator:a6df32a29ed44d23d513a920147bf7eb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedf53c47c34a42a233357ac50e997d61"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 1024, false &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#aedf53c47c34a42a233357ac50e997d61">skein1024</a></td></tr>
<tr class="memdesc:aedf53c47c34a42a233357ac50e997d61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein1024 hash function.  <a href="#aedf53c47c34a42a233357ac50e997d61">More...</a><br /></td></tr>
<tr class="separator:aedf53c47c34a42a233357ac50e997d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf339a6ac310467790dc8c98a72c4e55"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 512, false &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#aaf339a6ac310467790dc8c98a72c4e55">skein512</a></td></tr>
<tr class="memdesc:aaf339a6ac310467790dc8c98a72c4e55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein512 hash function.  <a href="#aaf339a6ac310467790dc8c98a72c4e55">More...</a><br /></td></tr>
<tr class="separator:aaf339a6ac310467790dc8c98a72c4e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42dff17296f6568f6209207c9830ced9"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 256, false &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a42dff17296f6568f6209207c9830ced9">skein256</a></td></tr>
<tr class="memdesc:a42dff17296f6568f6209207c9830ced9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein256 hash function.  <a href="#a42dff17296f6568f6209207c9830ced9">More...</a><br /></td></tr>
<tr class="separator:a42dff17296f6568f6209207c9830ced9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af11db7a8a4a8458bdfbeae3cccf9f389"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 1024, true &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#af11db7a8a4a8458bdfbeae3cccf9f389">skein1024_xof</a></td></tr>
<tr class="memdesc:af11db7a8a4a8458bdfbeae3cccf9f389"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein1024 in XOF mode.  <a href="#af11db7a8a4a8458bdfbeae3cccf9f389">More...</a><br /></td></tr>
<tr class="separator:af11db7a8a4a8458bdfbeae3cccf9f389"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5368ab0cf2c45b381ee63776d332915"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 512, true &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#af5368ab0cf2c45b381ee63776d332915">skein512_xof</a></td></tr>
<tr class="memdesc:af5368ab0cf2c45b381ee63776d332915"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein512 in XOF mode.  <a href="#af5368ab0cf2c45b381ee63776d332915">More...</a><br /></td></tr>
<tr class="separator:af5368ab0cf2c45b381ee63776d332915"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd1645bdfcb0c09731547c93e4484037"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::skein_provider&lt; 256, true &gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#afd1645bdfcb0c09731547c93e4484037">skein256_xof</a></td></tr>
<tr class="memdesc:afd1645bdfcb0c09731547c93e4484037"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skein256 in XOF mode.  <a href="#afd1645bdfcb0c09731547c93e4484037">More...</a><br /></td></tr>
<tr class="separator:afd1645bdfcb0c09731547c93e4484037"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d97c2838bc84e2bbb0741db58220ad7"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::sm3_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a4d97c2838bc84e2bbb0741db58220ad7">sm3</a></td></tr>
<tr class="memdesc:a4d97c2838bc84e2bbb0741db58220ad7"><td class="mdescLeft">&#160;</td><td class="mdescRight">SM3 hash function.  <a href="#a4d97c2838bc84e2bbb0741db58220ad7">More...</a><br /></td></tr>
<tr class="separator:a4d97c2838bc84e2bbb0741db58220ad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a295bebb95a4b1f7ebc8919ce883ce177"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::streebog_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a295bebb95a4b1f7ebc8919ce883ce177">streebog</a></td></tr>
<tr class="memdesc:a295bebb95a4b1f7ebc8919ce883ce177"><td class="mdescLeft">&#160;</td><td class="mdescRight">Streebog hash function.  <a href="#a295bebb95a4b1f7ebc8919ce883ce177">More...</a><br /></td></tr>
<tr class="separator:a295bebb95a4b1f7ebc8919ce883ce177"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b36dbe93f2f5dd08638f108d94f7b14"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt; detail::whirlpool_provider &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedigestpp.html#a9b36dbe93f2f5dd08638f108d94f7b14">whirlpool</a></td></tr>
<tr class="memdesc:a9b36dbe93f2f5dd08638f108d94f7b14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whirlpool hash function.  <a href="#a9b36dbe93f2f5dd08638f108d94f7b14">More...</a><br /></td></tr>
<tr class="separator:a9b36dbe93f2f5dd08638f108d94f7b14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>digestpp namespace </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="ae7dba91d6b8d9c1ea7c194de33b1f98d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7dba91d6b8d9c1ea7c194de33b1f98d">&#9670;&nbsp;</a></span>blake</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake_provider, <a class="el" href="classdigestpp_1_1mixin_1_1blake__mixin.html">mixin::blake_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#ae7dba91d6b8d9c1ea7c194de33b1f98d">digestpp::blake</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE hash function (SHA-3 finalist) </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>224 / 256 / 384 / 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not supported</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake__mixin.html">mixin::blake_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit BLAKE digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake</a> hasher(256);</div><div class="line">hasher.absorb(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.hexdigest() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">7576698ee9cad30173080678e5965916adbb11cb5245d386bf1ffda1cb26c9d7</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake__mixin.html" title="Defines additional public functions for BLAKE algorithm. ">mixin::blake_mixin</a> </dd></dl>

</div>
</div>
<a id="aba880b81cd06ac625a680797a9c34f6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba880b81cd06ac625a680797a9c34f6c">&#9670;&nbsp;</a></span>blake2b</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint64_t, detail::blake2_type::hash&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#aba880b81cd06ac625a680797a9c34f6c">digestpp::blake2b</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2b hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>8 - 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>512 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes), or is not within the supported range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit BLAKE2b digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2b</a> hasher(256);</div><div class="line">hasher.absorb(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.hexdigest() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">01718cec35cd3d796dd00020e0bfecb473ad23457d063b75eff29c0ffa2e58a9</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="aef9e48cee90947e400f975c9ca126aee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef9e48cee90947e400f975c9ca126aee">&#9670;&nbsp;</a></span>blake2s</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint32_t, detail::blake2_type::hash&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#aef9e48cee90947e400f975c9ca126aee">digestpp::blake2s</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2s hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>8 - 256 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>256 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes), or is not within the supported range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit BLAKE2s digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2s</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="a47975780ffe7d66a274fafb292cbec29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47975780ffe7d66a274fafb292cbec29">&#9670;&nbsp;</a></span>blake2xb</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint64_t, detail::blake2_type::x_hash&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a47975780ffe7d66a274fafb292cbec29">digestpp::blake2xb</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2xb hash function. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a7e88d6565dc956c49573f71cba23bddc">blake2xb_xof</a></p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>512 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit BLAKE2xb digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2xb</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">ca7a0c9c54b4b93c0bee0aa3a4d63e4f7fb87e3e0a9050522377fde76f0b6c01</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="a7e88d6565dc956c49573f71cba23bddc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e88d6565dc956c49573f71cba23bddc">&#9670;&nbsp;</a></span>blake2xb_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint64_t, detail::blake2_type::xof&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a7e88d6565dc956c49573f71cba23bddc">digestpp::blake2xb_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2xb in XOF mode. </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a47975780ffe7d66a274fafb292cbec29">blake2xb</a></p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2xb_xof</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">364e84ca4c103df292306c93ebba6f6633d5e9cc8a95e040498e9a012d5ca534</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="aef4af42ce803e4dd8adc0d3fa8c44dd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef4af42ce803e4dd8adc0d3fa8c44dd6">&#9670;&nbsp;</a></span>blake2xs</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint32_t, detail::blake2_type::x_hash&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#aef4af42ce803e4dd8adc0d3fa8c44dd6">digestpp::blake2xs</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2xs hash function. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#ab95d8383d5ea7b1c167f8c735a83fe6a">blake2xs_xof</a></p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>256 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 512-bit BLAKE2xs digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2xs</a> hasher(512);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">e709f8377d21507c166e5dd2279a1f58b290792d65dafcc5647b6e439a974227503c341341572725709b874e95f13a438677aa6f9648467fd341e0f3e5421840</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="ab95d8383d5ea7b1c167f8c735a83fe6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab95d8383d5ea7b1c167f8c735a83fe6a">&#9670;&nbsp;</a></span>blake2xs_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::blake2_provider&lt;uint32_t, detail::blake2_type::xof&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#ab95d8383d5ea7b1c167f8c735a83fe6a">digestpp::blake2xs_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>BLAKE2xs in XOF mode. </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#aef4af42ce803e4dd8adc0d3fa8c44dd6">blake2xs</a></p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>salt, personalization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html">mixin::blake2_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::blake2xs_xof</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">0650cde4df888a06eada0f0fecb3c17594304b4a03fdd678182f27db1238b1747e33c34ae539fe2179a7594442b5cc9a7a0f398bb15ac3095a397de6a60061d6</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1blake2__mixin.html" title="Defines additional public functions for BLAKE2 family of algorithms. ">mixin::blake2_mixin</a> </dd></dl>

</div>
</div>
<a id="a45d4799abd5095ba4caba998afe1472b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45d4799abd5095ba4caba998afe1472b">&#9670;&nbsp;</a></span>cshake128</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::shake_provider&lt;128, 24&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a45d4799abd5095ba4caba998afe1472b">digestpp::cshake128</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Customizable cSHAKE128 function. </p>
<p>Extendable output function similar to SHAKE128 but with possibility to use a customization string. When used without a customization string, the output is identical to <a class="el" href="namespacedigestpp.html#a17198d967ff887fb804aecc0a56153d3">shake128</a>.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>function name, customization</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::cshake128</a> hasher;</div><div class="line">hasher.set_customization(<span class="stringliteral">&quot;My Custom SHAKE&quot;</span>);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">5b831bfe752f7f05d81f18f0e83a92eb48b9e3d460c10022ecb4852aa8b1f9d4</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html" title="Defines additional public functions for cSHAKE128 and cSHAKE256. ">mixin::cshake_mixin</a> </dd></dl>

</div>
</div>
<a id="a6df32a29ed44d23d513a920147bf7eb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6df32a29ed44d23d513a920147bf7eb1">&#9670;&nbsp;</a></span>cshake256</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::shake_provider&lt;256, 24&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a6df32a29ed44d23d513a920147bf7eb1">digestpp::cshake256</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Customizable cSHAKE256 function. </p>
<p>Extendable output function similar to SHAKE256 but with possibility to use a customization string. When used without a customization string, the output is identical to <a class="el" href="namespacedigestpp.html#a534e07d1698662e11be399a6a735b278">shake256</a>.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>function name, customization</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html">mixin::cshake_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::cshake256</a> hasher;</div><div class="line">hasher.set_customization(<span class="stringliteral">&quot;My Custom SHAKE&quot;</span>);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">bcebde2c2e18f6efd99ee9e0def1383e86595d72e49b4754f7f727a962c3cd3d</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1cshake__mixin.html" title="Defines additional public functions for cSHAKE128 and cSHAKE256. ">mixin::cshake_mixin</a> </dd></dl>

</div>
</div>
<a id="a6ad6dd5d19a4e2ba87352e790b9676d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ad6dd5d19a4e2ba87352e790b9676d2">&#9670;&nbsp;</a></span>groestl</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::groestl_provider&gt; <a class="el" href="namespacedigestpp.html#a6ad6dd5d19a4e2ba87352e790b9676d2">digestpp::groestl</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Grøstl hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>8 - 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes), or is not within the supported range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit Grøstl digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::groestl</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">8c7ad62eb26a21297bc39c2d7293b4bd4d3399fa8afab29e970471739e28b301</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a392d10c5f15452e692bae608869910ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a392d10c5f15452e692bae608869910ae">&#9670;&nbsp;</a></span>jh</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::jh_provider&gt; <a class="el" href="namespacedigestpp.html#a392d10c5f15452e692bae608869910ae">digestpp::jh</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>JH hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>8 - 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes), or is not within the supported range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit JH digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::jh</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">6a049fed5fc6874acfdc4a08b568a4f8cbac27de933496f031015b38961608a0</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a1b65fae1ddea734203f1450f1ee84bc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b65fae1ddea734203f1450f1ee84bc5">&#9670;&nbsp;</a></span>k12</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::k12m14_provider&lt;128&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a1b65fae1ddea734203f1450f1ee84bc5">digestpp::k12</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KangarooTwelve function. </p>
<p>Extendable output function similar to SHAKE128 but with reduced number of round.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::k12</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">b4f249b4f77c58df170aa4d1723db1127d82f1d98d25ddda561ada459cd11a48</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html" title="Defines additional public functions for KangarooTwelve and MarsupilamiFourteen. ">mixin::k12m14_mixin</a> </dd></dl>

</div>
</div>
<a id="a90a899ac8acc680665430608f9410c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90a899ac8acc680665430608f9410c85">&#9670;&nbsp;</a></span>kmac128</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::kmac_provider&lt;128, false&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a90a899ac8acc680665430608f9410c85">digestpp::kmac128</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KMAC128 in hash mode. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a89668569302df7e0dd03b7174732205b">kmac128_xof</a>. While primary usage of KMAC is message authentication, it can also be used without a key as a regular hash function.</p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Set key and output a 256-bit KMAC128 of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::kmac128</a> hasher(256);</div><div class="line">hasher.set_key(R<span class="stringliteral">&quot;(@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_)&quot;);</span></div><div class="line"><span class="stringliteral">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(</span><span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">bbd4ebf20aacc8e4dfd2cc91f2b6cbf33e2a45d805996b48a17b8d3e42b4b010</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a89668569302df7e0dd03b7174732205b" title="KMAC128 in XOF mode (KMACXOF128) ">kmac128_xof</a>, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html" title="Defines additional public functions for KMAC family of algorithms. ">mixin::kmac_mixin</a> </dd></dl>

</div>
</div>
<a id="a89668569302df7e0dd03b7174732205b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89668569302df7e0dd03b7174732205b">&#9670;&nbsp;</a></span>kmac128_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::kmac_provider&lt;128, true&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a89668569302df7e0dd03b7174732205b">digestpp::kmac128_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KMAC128 in XOF mode (KMACXOF128) </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a90a899ac8acc680665430608f9410c85">kmac128</a>. This hasher can also be used without a key, but there are no advantages over <a class="el" href="namespacedigestpp.html#a45d4799abd5095ba4caba998afe1472b">cshake128</a> in this case.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Set key, absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::kmac128_xof</a> hasher;</div><div class="line">hasher.set_key(R<span class="stringliteral">&quot;(@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_)&quot;);</span></div><div class="line"><span class="stringliteral">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(</span><span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">a5dd2e2c92e4fe5d203ab7cc4e05df888b021390ba08a00dcb39a94ed07bd364</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a90a899ac8acc680665430608f9410c85" title="KMAC128 in hash mode. ">kmac128</a>, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html" title="Defines additional public functions for KMAC family of algorithms. ">mixin::kmac_mixin</a> </dd></dl>

</div>
</div>
<a id="a6f9055e092dd623dc74cf4b0588cb437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f9055e092dd623dc74cf4b0588cb437">&#9670;&nbsp;</a></span>kmac256</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::kmac_provider&lt;256, false&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a6f9055e092dd623dc74cf4b0588cb437">digestpp::kmac256</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KMAC256 in hash mode. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a370a5d0b21206abe72483afdd00d9991">kmac256_xof</a>. While primary usage of KMAC is message authentication, it can also be used without a key as a regular hash function.</p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Set key and output a 256-bit KMAC256 of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::kmac256</a> hasher(256);</div><div class="line">hasher.set_key(R(<span class="stringliteral">&quot;@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_&quot;</span>));</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">bbe7d65fe0e7574254a13e0f3f79482275b96887287fc8b620a92ed5e5de3bce</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a370a5d0b21206abe72483afdd00d9991" title="KMAC256 in XOF mode (KMACXOF256) ">kmac256_xof</a>, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html" title="Defines additional public functions for KMAC family of algorithms. ">mixin::kmac_mixin</a> </dd></dl>

</div>
</div>
<a id="a370a5d0b21206abe72483afdd00d9991"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a370a5d0b21206abe72483afdd00d9991">&#9670;&nbsp;</a></span>kmac256_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::kmac_provider&lt;256, true&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a370a5d0b21206abe72483afdd00d9991">digestpp::kmac256_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KMAC256 in XOF mode (KMACXOF256) </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a6f9055e092dd623dc74cf4b0588cb437">kmac256</a>. This hasher can also be used without a key, but there are no advantages over <a class="el" href="namespacedigestpp.html#a6df32a29ed44d23d513a920147bf7eb1">cshake256</a> in this case.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html">mixin::kmac_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Set key, absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::kmac256_xof</a> hasher;</div><div class="line">hasher.set_key(R<span class="stringliteral">&quot;(@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_)&quot;);</span></div><div class="line"><span class="stringliteral">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(</span><span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">81ce507692e27fb404e4a765c3be3450ce5c090a61b8311f93eb4e35604877ad</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a6f9055e092dd623dc74cf4b0588cb437" title="KMAC256 in hash mode. ">kmac256</a>, <a class="el" href="classdigestpp_1_1mixin_1_1kmac__mixin.html" title="Defines additional public functions for KMAC family of algorithms. ">mixin::kmac_mixin</a> </dd></dl>

</div>
</div>
<a id="a2f44f2ba13aeb17e2b3e72cb1966ec98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f44f2ba13aeb17e2b3e72cb1966ec98">&#9670;&nbsp;</a></span>kupyna</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::kupyna_provider&gt; <a class="el" href="namespacedigestpp.html#a2f44f2ba13aeb17e2b3e72cb1966ec98">digestpp::kupyna</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Kupyna hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>256 / 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not supported</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit Kupyna digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::kupyna</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">996899f2d7422ceaf552475036b2dc120607eff538abf2b8dff471a98a4740c6</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="ab25af0ef9a4c4658beca88fbf821a668"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab25af0ef9a4c4658beca88fbf821a668">&#9670;&nbsp;</a></span>m14</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::k12m14_provider&lt;256&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#ab25af0ef9a4c4658beca88fbf821a668">digestpp::m14</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>MarsupilamiFourteen function. </p>
<p>Extendable output function similar to KangarooTwelve, but providing 256-bit security.</p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>customization</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html">mixin::k12m14_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::m14</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">3611bcaa666347770dbffd4562f137c5adfe2e09f3c4268ef7c7d7c0e6c5d59c</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1k12m14__mixin.html" title="Defines additional public functions for KangarooTwelve and MarsupilamiFourteen. ">mixin::k12m14_mixin</a> </dd></dl>

</div>
</div>
<a id="a450b5606fcc57a8f9abe786042f94473"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a450b5606fcc57a8f9abe786042f94473">&#9670;&nbsp;</a></span>md5</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::md5_provider&gt; <a class="el" href="namespacedigestpp.html#a450b5606fcc57a8f9abe786042f94473">digestpp::md5</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>MD5 hash function. </p>
<p>Note that MD5 hash function is considered insecure and is not recommended for new applications.</p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>128 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>128 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output an MD5 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::md5</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">9e107d9d372bb6826bd81d3542a419d6</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a891a3fc5d8acf9c887b71065e8d905c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a891a3fc5d8acf9c887b71065e8d905c1">&#9670;&nbsp;</a></span>sha1</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha1_provider&gt; <a class="el" href="namespacedigestpp.html#a891a3fc5d8acf9c887b71065e8d905c1">digestpp::sha1</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-1 hash function. </p>
<p>Note that SHA-1 hash function is considered insecure and is not recommended for new applications.</p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>160 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>160 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SHA1 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha1</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">2fd4e1c67a2d28fced849ee1bb76e7391b93eb12</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a2eb43b42bfeb66e2dfc423178e39986c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eb43b42bfeb66e2dfc423178e39986c">&#9670;&nbsp;</a></span>sha224</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha2_provider&lt;uint32_t, 224&gt; &gt; <a class="el" href="namespacedigestpp.html#a2eb43b42bfeb66e2dfc423178e39986c">digestpp::sha224</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-224 hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>224 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>224 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SHA-224 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha224</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a22fdc9182b2f609a11e0eb906a374f02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22fdc9182b2f609a11e0eb906a374f02">&#9670;&nbsp;</a></span>sha256</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha2_provider&lt;uint32_t, 256&gt; &gt; <a class="el" href="namespacedigestpp.html#a22fdc9182b2f609a11e0eb906a374f02">digestpp::sha256</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-256 hash function. </p>
<p>Note that this function is slower than SHA-512/256 on 64-bit systems.</p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>256 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>256 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SHA-256 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha256</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a4ac862e124d2502301eb501a6466b8dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ac862e124d2502301eb501a6466b8dc">&#9670;&nbsp;</a></span>sha3</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha3_provider&gt; <a class="el" href="namespacedigestpp.html#a4ac862e124d2502301eb501a6466b8dc">digestpp::sha3</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-3 hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>224 / 256 / 384 / 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not supported</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit SHA-3 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha3</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a32f89f2b267ee05fd0d09c862316be5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32f89f2b267ee05fd0d09c862316be5b">&#9670;&nbsp;</a></span>sha384</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha2_provider&lt;uint64_t, 384&gt; &gt; <a class="el" href="namespacedigestpp.html#a32f89f2b267ee05fd0d09c862316be5b">digestpp::sha384</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-384 hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>384 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>384 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SHA-384 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha384</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="affd7a1c48ea3fbb97adc51154e534e37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affd7a1c48ea3fbb97adc51154e534e37">&#9670;&nbsp;</a></span>sha512</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sha2_provider&lt;uint64_t&gt; &gt; <a class="el" href="namespacedigestpp.html#affd7a1c48ea3fbb97adc51154e534e37">digestpp::sha512</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHA-512 hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>8 - 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>512 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes), or is not within the supported range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SHA-512/256 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sha512</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">dd9d67b371519c339ed8dbd25af90e976a1eeefd4ad3d889005e532fc5bef04d</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a17198d967ff887fb804aecc0a56153d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17198d967ff887fb804aecc0a56153d3">&#9670;&nbsp;</a></span>shake128</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::shake_provider&lt;128, 24&gt; &gt; <a class="el" href="namespacedigestpp.html#a17198d967ff887fb804aecc0a56153d3">digestpp::shake128</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHAKE128 function. </p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::shake128</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a45d4799abd5095ba4caba998afe1472b" title="Customizable cSHAKE128 function. ">cshake128</a> </dd></dl>

</div>
</div>
<a id="a534e07d1698662e11be399a6a735b278"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a534e07d1698662e11be399a6a735b278">&#9670;&nbsp;</a></span>shake256</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::shake_provider&lt;256, 24&gt; &gt; <a class="el" href="namespacedigestpp.html#a534e07d1698662e11be399a6a735b278">digestpp::shake256</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SHAKE256 function. </p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::shake256</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">2f671343d9b2e1604dc9dcf0753e5fe15c7c64a0d283cbbf722d411a0e36f6ca</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="namespacedigestpp.html#a6df32a29ed44d23d513a920147bf7eb1" title="Customizable cSHAKE256 function. ">cshake256</a> </dd></dl>

</div>
</div>
<a id="aedf53c47c34a42a233357ac50e997d61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedf53c47c34a42a233357ac50e997d61">&#9670;&nbsp;</a></span>skein1024</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;1024, false&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#aedf53c47c34a42a233357ac50e997d61">digestpp::skein1024</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein1024 hash function. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#af11db7a8a4a8458bdfbeae3cccf9f389">skein1024_xof</a></p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>1024 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit Skein1024 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein1024</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">054922d4393e36af62143986221555bee407671f6e57631bd7273e215a714833</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#af11db7a8a4a8458bdfbeae3cccf9f389" title="Skein1024 in XOF mode. ">skein1024_xof</a> </dd></dl>

</div>
</div>
<a id="af11db7a8a4a8458bdfbeae3cccf9f389"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af11db7a8a4a8458bdfbeae3cccf9f389">&#9670;&nbsp;</a></span>skein1024_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;1024, true&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#af11db7a8a4a8458bdfbeae3cccf9f389">digestpp::skein1024_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein1024 in XOF mode. </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#aedf53c47c34a42a233357ac50e997d61">skein1024</a></p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein1024_xof</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">20cd7366b0a3713037fdbf8c635ea190943261455689792a327d93a9fd74dedf</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#aedf53c47c34a42a233357ac50e997d61" title="Skein1024 hash function. ">skein1024</a> </dd></dl>

</div>
</div>
<a id="a42dff17296f6568f6209207c9830ced9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42dff17296f6568f6209207c9830ced9">&#9670;&nbsp;</a></span>skein256</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;256, false&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#a42dff17296f6568f6209207c9830ced9">digestpp::skein256</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein256 hash function. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#afd1645bdfcb0c09731547c93e4484037">skein256_xof</a></p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>256 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 512-bit Skein256 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein256</a> hasher(512);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">f8138e72cdd9e11cf09e4be198c234acb0d21a9f75f936e989cf532f1fa9f4fb21d255811f0f1592fb3617d04704add875ae7bd16ddbbeaed4eca6eb9675d2c6</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#afd1645bdfcb0c09731547c93e4484037" title="Skein256 in XOF mode. ">skein256_xof</a> </dd></dl>

</div>
</div>
<a id="afd1645bdfcb0c09731547c93e4484037"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd1645bdfcb0c09731547c93e4484037">&#9670;&nbsp;</a></span>skein256_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;256, true&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#afd1645bdfcb0c09731547c93e4484037">digestpp::skein256_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein256 in XOF mode. </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#a42dff17296f6568f6209207c9830ced9">skein256</a></p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein256_xof</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">217021fbabe331c5753024fe4c17a005a698b037859ca8f4f0fb9112dce5605c</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#a42dff17296f6568f6209207c9830ced9" title="Skein256 hash function. ">skein256</a> </dd></dl>

</div>
</div>
<a id="aaf339a6ac310467790dc8c98a72c4e55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf339a6ac310467790dc8c98a72c4e55">&#9670;&nbsp;</a></span>skein512</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;512, false&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#aaf339a6ac310467790dc8c98a72c4e55">digestpp::skein512</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein512 hash function. </p>
<p>Use this variant when the required hash size is known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#af5368ab0cf2c45b381ee63776d332915">skein512_xof</a></p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>arbitrary</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>512 bits</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not divisible by 8 (full bytes)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit Skein512 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein512</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#af5368ab0cf2c45b381ee63776d332915" title="Skein512 in XOF mode. ">skein512_xof</a> </dd></dl>

</div>
</div>
<a id="af5368ab0cf2c45b381ee63776d332915"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5368ab0cf2c45b381ee63776d332915">&#9670;&nbsp;</a></span>skein512_xof</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::skein_provider&lt;512, true&gt;, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a>&gt; <a class="el" href="namespacedigestpp.html#af5368ab0cf2c45b381ee63776d332915">digestpp::skein512_xof</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Skein512 in XOF mode. </p>
<p>Use this variant when the required hash size is not known in advance. Otherwise, use <a class="el" href="namespacedigestpp.html#aaf339a6ac310467790dc8c98a72c4e55">skein512</a></p>
<dl class="section user"><dt>Function type</dt><dd>XOF</dd></dl>
<dl class="section user"><dt>Optional parameters</dt><dd>personalization, nonce, key</dd></dl>
<p>See <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html">mixin::skein_mixin</a> for the description of optional parameters.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Absorb a string and squeeze 32 bytes of output</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::skein512_xof</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a96c54688aba55d04bc0f015b67dbf112">hexsqueeze</a>(32) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">cd7447a48e387ca4461e75ede8424566f7ed816a80bfac5bed291ac107f96170</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a>, <a class="el" href="classdigestpp_1_1mixin_1_1skein__mixin.html" title="Defines additional public functions for Skein family of algorithms. ">mixin::skein_mixin</a>, <a class="el" href="namespacedigestpp.html#aaf339a6ac310467790dc8c98a72c4e55" title="Skein512 hash function. ">skein512</a> </dd></dl>

</div>
</div>
<a id="a4d97c2838bc84e2bbb0741db58220ad7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d97c2838bc84e2bbb0741db58220ad7">&#9670;&nbsp;</a></span>sm3</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::sm3_provider&gt; <a class="el" href="namespacedigestpp.html#a4d97c2838bc84e2bbb0741db58220ad7">digestpp::sm3</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SM3 hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>256 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>256 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a SM3 digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::sm3</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">5fdfe814b8573ca021983970fc79b2218c9570369b4859684e2e4c3fc76cb8ea</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a295bebb95a4b1f7ebc8919ce883ce177"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a295bebb95a4b1f7ebc8919ce883ce177">&#9670;&nbsp;</a></span>streebog</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::streebog_provider&gt; <a class="el" href="namespacedigestpp.html#a295bebb95a4b1f7ebc8919ce883ce177">digestpp::streebog</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Streebog hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>256 / 512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>none</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>if the requested digest size is not supported</td></tr>
  </table>
  </dd>
</dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a 256-bit Streebog digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::streebog</a> hasher(256);</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">3e7dea7f2384b6c5a3d0e24aaa29c05e89ddd762145030ec22c71a6db8b2c1f4</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
<a id="a9b36dbe93f2f5dd08638f108d94f7b14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b36dbe93f2f5dd08638f108d94f7b14">&#9670;&nbsp;</a></span>whirlpool</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classdigestpp_1_1hasher.html">hasher</a>&lt;detail::whirlpool_provider&gt; <a class="el" href="namespacedigestpp.html#a9b36dbe93f2f5dd08638f108d94f7b14">digestpp::whirlpool</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Whirlpool hash function. </p>
<dl class="section user"><dt>Provider type</dt><dd>hash</dd></dl>
<dl class="section user"><dt>Supported output sizes</dt><dd>512 bits</dd></dl>
<dl class="section user"><dt>Default output size</dt><dd>512 bits</dd></dl>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"> <span class="comment">// Output a Whirlpool digest of a string</span></div><div class="line"><a class="code" href="classdigestpp_1_1hasher.html">digestpp::whirlpool</a> hasher;</div><div class="line">hasher.<a class="code" href="classdigestpp_1_1hasher.html#aa3c03c169eba04090910d0efb5918d55">absorb</a>(<span class="stringliteral">&quot;The quick brown fox jumps over the lazy dog&quot;</span>);</div><div class="line">std::cout &lt;&lt; hasher.<a class="code" href="classdigestpp_1_1hasher.html#a1bc08bdd98e7580e14f8f9b971708c54">hexdigest</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div></div><!-- fragment --></dd></dl>
<dl class="section user"><dt>Example output:</dt><dd><div class="fragment"><div class="line">b97de512e91e3828b40d2b0fdce9ceb3c4a71f9bea8d88e75c4fa854df36725fd2b52eb6544edcacd6f8beddfea403cb55ae31f03ad62a5ef54e42ee82c3fb35</div></div><!-- fragment --></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classdigestpp_1_1hasher.html" title="Main class template implementing the public API for hashing. ">hasher</a> </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
